/**
 *    Copyright (C) 2011 Nadim Benabdenbi <nadim.benabdenbi@gmail.com>
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */
package com.google.code.maven.plugin.beans;

import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;

import org.apache.commons.lang.builder.ToStringBuilder;

/**
 * 
 * @author <a href="mailto:nadim.benabdenbi@gmail.com">Nadim Benabdenbi</a>
 * @version 1.0
 * @since JDK1.6
 * 
 */
public class SimpleFieldContainer {
	
	// primitive types
	private boolean b;
	private short s;
	private int i;
	private long l;
	private double d;
	private float f;
	
	// primitive boxify types
	private Boolean aBoolean;
	private Short aShort;
	private Integer anInteger;
	private Long along;
	private Float afloat;
	private Double aDouble;
	private String string;
	
	// common types
	private Date date;
	private AtomicInteger atomicInteger;
	private AtomicLong atomicLong;
	
	// Collections
	private List<String> list;
	private HashSet<String> hashSet;
	private Map<String, Integer> map;
	
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
	
	public SimpleFieldContainer() {
		super();
	}
	
	public SimpleFieldContainer(boolean b) {
		super();
		this.b = b;
	}
	
	public SimpleFieldContainer(Boolean aBoolean) throws IllegalArgumentException {
		super();
		this.aBoolean = aBoolean;
	}
	
	public SimpleFieldContainer(boolean b, Boolean aBoolean) throws IllegalArgumentException, UnsupportedOperationException {
		super();
		this.b = b;
		this.aBoolean = aBoolean;
	}
	
	/**
	 * @return the b
	 */
	public boolean isB() {
		return b;
	}
	
	/**
	 * @param b
	 *            the b to set
	 */
	public void setB(boolean b) throws IllegalArgumentException {
		this.b = b;
	}
	
	/**
	 * @return the s
	 */
	public short getS() {
		return s;
	}
	
	/**
	 * @param s
	 *            the s to set
	 */
	public void setS(short s) {
		this.s = s;
	}
	
	/**
	 * @return the i
	 */
	public int getI() {
		return i;
	}
	
	/**
	 * @param i
	 *            the i to set
	 */
	public void setI(int i) {
		this.i = i;
	}
	
	/**
	 * @return the l
	 */
	public long getL() {
		return l;
	}
	
	/**
	 * @param l
	 *            the l to set
	 */
	public void setL(long l) {
		this.l = l;
	}
	
	/**
	 * @return the d
	 */
	public double getD() {
		return d;
	}
	
	/**
	 * @param d
	 *            the d to set
	 */
	public void setD(double d) {
		this.d = d;
	}
	
	/**
	 * @return the f
	 */
	public float getF() {
		return f;
	}
	
	/**
	 * @param f
	 *            the f to set
	 */
	public void setF(float f) {
		this.f = f;
	}
	
	/**
	 * @return the aBoolean
	 */
	public Boolean getaBoolean() {
		return aBoolean;
	}
	
	/**
	 * @param aBoolean
	 *            the aBoolean to set
	 */
	public void setaBoolean(Boolean aBoolean) {
		this.aBoolean = aBoolean;
	}
	
	/**
	 * @return the aShort
	 */
	public Short getaShort() {
		return aShort;
	}
	
	/**
	 * @param aShort
	 *            the aShort to set
	 */
	public void setaShort(Short aShort) {
		this.aShort = aShort;
	}
	
	/**
	 * @return the anInteger
	 */
	public Integer getAnInteger() {
		return anInteger;
	}
	
	/**
	 * @param anInteger
	 *            the anInteger to set
	 */
	public void setAnInteger(Integer anInteger) {
		this.anInteger = anInteger;
	}
	
	/**
	 * @return the along
	 */
	public Long getAlong() {
		return along;
	}
	
	/**
	 * @param along
	 *            the along to set
	 */
	public void setAlong(Long along) {
		this.along = along;
	}
	
	/**
	 * @return the afloat
	 */
	public Float getAfloat() {
		return afloat;
	}
	
	/**
	 * @param afloat
	 *            the afloat to set
	 */
	public void setAfloat(Float afloat) {
		this.afloat = afloat;
	}
	
	/**
	 * @return the aDouble
	 */
	public Double getaDouble() {
		return aDouble;
	}
	
	/**
	 * @param aDouble
	 *            the aDouble to set
	 */
	public void setaDouble(Double aDouble) {
		this.aDouble = aDouble;
	}
	
	/**
	 * @return the string
	 */
	public String getString() {
		return string;
	}
	
	/**
	 * @param string
	 *            the string to set
	 */
	public void setString(String string) {
		this.string = string;
	}
	
	/**
	 * @return the date
	 */
	public Date getDate() {
		return date;
	}
	
	/**
	 * @param date
	 *            the date to set
	 */
	public void setDate(Date date) {
		this.date = date;
	}
	
	/**
	 * @return the atomicInteger
	 */
	public AtomicInteger getAtomicInteger() {
		return atomicInteger;
	}
	
	/**
	 * @param atomicInteger
	 *            the atomicInteger to set
	 */
	public void setAtomicInteger(AtomicInteger atomicInteger) {
		this.atomicInteger = atomicInteger;
	}
	
	/**
	 * @return the atomicLong
	 */
	public AtomicLong getAtomicLong() {
		return atomicLong;
	}
	
	/**
	 * @param atomicLong
	 *            the atomicLong to set
	 */
	public void setAtomicLong(AtomicLong atomicLong) {
		this.atomicLong = atomicLong;
	}
	
	/**
	 * @return the list
	 */
	public List<String> getList() {
		return list;
	}
	
	/**
	 * @param list
	 *            the list to set
	 */
	public void setList(List<String> list) {
		this.list = list;
	}
	
	/**
	 * @return the hashSet
	 */
	public HashSet<String> getHashSet() {
		return hashSet;
	}
	
	/**
	 * @param hashSet
	 *            the hashSet to set
	 */
	public void setHashSet(HashSet<String> hashSet) {
		this.hashSet = hashSet;
	}
	
	/**
	 * @return the map
	 */
	public Map<String, Integer> getMap() {
		return map;
	}
	
	/**
	 * @param map
	 *            the map to set
	 */
	public void setMap(Map<String, Integer> map) {
		this.map = map;
	}
	
}
